@ Biri.s
@ Encontrar el maximo de una lista de numeros


@ r1 - Utilizado para mantener la direccion de los elementos de datos
@ r0 - Utilizado para los datos mas grandes
@ r3 - Utilizado para el elemento de dato actual

.section        .data

numbers:                          @ Los datos que vamos a utilizar
.long  3,67,34,222,45,75,54,34,44,33,22,11,66,0

.globl _start

_start:
ldr %r1, =numbers                 @ Establecer r1 para iniciar la direccion de los nunmeros
ldr %r3, [%r1]                    @ Carga r3 con el primer numero
mov %r0, %r3                      @ Al comienzo el numero actual debe ser el mas grande

loop:
  cmp %r3, $0                     @ Compruebe si r3 tiene cero (final de la lista)
  beq exit                        @ Si es asi, salir
  ldr %r3, [%r1,#4]!              @ Cargarmos el siguiente dato en r3
  cmp %r3, %r0                    @ Comparamos r0 y r3
  ble loop                        @ Vamos al inicio del bucle si r3 <= r0
  mov %r0, %r3                    @ De lo contario poner r3 en r0
  bal loop                        @ Vamos al inicio del bucle (siempre la rama)
  
  exit:                           @ El valor mas grande esta ahora en 0
  mov %r7, $1                     @ Preparado para salir
  svc $0                          @ Despertamos el kernel
  .end                            @ Marcamos el final del codigo
